"""
需求：打开‘注册实例.html’页面，完成以下操作
1). 点击‘注册A页面’链接
2). 在打开的页面中，填写注册信息
"""

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 1. 启动浏览器并打开本地HTML文件
local_path = r"E:\dg\python\pythonProject\UI自动化\窗口切换\注册实例.html"  # 定义本地HTML文件的路径，使用原始字符串（r前缀）避免转义问题
url = "file:///" + local_path.replace("\\", "/")  # 将本地文件路径转换为浏览器可识别的URL格式：file:///开头，并将反斜杠\替换为正斜杠/

driver = webdriver.Chrome()
driver.get(url)

# 2. 获取‘注册实例.html’当前窗口句柄
Register_handle = driver.current_window_handle
print(f"1. 当前窗口句柄（注册实例.html）: {Register_handle}")

# 等待页面加载
time.sleep(2)

# 3. 点击‘注册A页面’链接
driver.find_element(By.ID, "ZCA").click()
print("2. 已点击'注册A页面'链接，正在打开新窗口...")

# 4. 获取所有窗口句柄
time.sleep(2)  # 简单等待新窗口加载
all_handles = driver.window_handles
print(f"3. 所有窗口句柄: {all_handles}")

# 5. 获取注册A页面对应的窗口句柄，并切换
#    分析：新窗口句柄 ≠ 原始句柄 → 找出不同的那个进行切换
new_handle = None  # 定义变量new_handle,用于保存获取到的新窗口的句柄
for handle in all_handles:      # 循环遍历 all_handles 列表中的每一个窗口句柄
    if handle != Register_handle:  # 判断当前句柄是否是新打开的句柄，如果当前句柄不等于原始主窗口的句柄，说明它是新打开的窗口
        new_handle = handle   # 将这个不同的句柄赋值给new_handle，即表示找到了新窗口
        break   # 找到新窗口后立即退出循环，不再继续遍历

# 判断是否成功找到新窗口句柄
if new_handle:
    driver.switch_to.window(new_handle)  # 切换到新窗口（通过句柄）
    print(f"4. 已切换到新窗口句柄: {new_handle}")
else:   # 如果没有找到新窗口，输出错误信息
    print("错误：未找到新窗口！")
    driver.quit()  # 关闭浏览器
    exit()

# 6. 操作注册A页面元素
print("5. 开始填写注册A页面信息...")
driver.find_element(By.ID, "userA").send_keys("adminA")    # 在id为"userA"的输入框中输入文本"adminA"
driver.find_element(By.ID, "passwordA").send_keys("12345")  # 在id为"passwordA"的输入框中输入文本"12345"
driver.find_element(By.ID, "telA").send_keys("17777429832")  # 在id为"telA"的输入框中输入文本"17777429832"
driver.find_element(By.ID, "emailA").send_keys("1234@qq.com")  # 在id为"emailA"的输入框中输入文本"1234@qq.com"

print("注册信息填写完成！")

# 等待5秒 查看结果
time.sleep(5)

# 关闭浏览器
driver.quit()
